package com.hltx.mapper.user;

import java.util.List;
import java.util.Map;

import com.hltx.pojo.business.BusinessInfo;
import com.hltx.pojo.user.Group;
import com.hltx.pojo.user.SMessage;
import com.hltx.pojo.user.SupplierReal;
import com.hltx.pojo.user.User;
import com.hltx.pojo.user.UserAccount;
import com.hltx.pojo.user.UserLogin;

public interface UserMapper {

	/**
	 * 根据登录id获取登录人详细信息
	 * @param loginId
	 * @return
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45 
	 */
	Map<String, Object> getLoginInfo(int loginId);

	/**
	 * 保存userLogin信息
	 * 
	 * @param login
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45 
	 */
	void saveUserLogin(UserLogin login);

	/**
	 * 保存userInfo信息
	 * 
	 * @param user
	 * @return
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45 
	 */
	int saveUserInfo(User user);

	/**
	 * 保存userAccount资金账户信息
	 * 
	 * @param account
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45 
	 */
	void saveUserAccount(UserAccount account);
	
	/**
	 * 获取用户信息
	 * @param id
	 * @return
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45 
	 */
	User getUser(int id);

	/**
	 * 获取当前用户信息
	 * 
	 * @param user
	 * @return
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45
	 */
	public User getUser(User user);
	/**
	 * 根据用户名和密码获取当前登录人账号和密码
	 * @param user
	 * @return
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45
	 */
	public UserLogin userLogin(UserLogin user);
	
	/**
	 * 修改密码
	 * @param id
	 * @param oldPwd
	 * @param newPwd
	 * @param userName
	 * @param clientid
	 * @param clientSecret
	 * @param orgName
	 * @param appName
	 * @return
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45
	 */
	public String updatePwd(int id, String oldPwd, String newPwd, String userName, String clientid, String clientSecret,
			String orgName, String appName);
	
	/**
	 * 根据登录id查询详情
	 * @param id
	 * @return
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45
	 */
	UserLogin getUserById(int id);
	
	/**
	 *修改密码 
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45
	 */
	void updateUserPwd(UserLogin login);
	
	/**
	 * 找回密码 （因为找回密码是在没有登录的情况下进行修改密码的 只能根据用户名 进行修改）
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45
	 */
	public void updateNewsPwd(UserLogin login);
	
	/**
	 * 修改昵称
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45
	 * @return
	 */
	int saveName(User user);
	
	/**
	 * 修改性别
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45
	 */
	void updateSex(User user);
	
	/**
	 * 添加登录信息（账号密码） 
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45
	 * @return
	 */
	int saveUser(User user);

	/**
	 * 修改生日日期
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45
	 */
	void updateDay(User user);
	
	String getUserByPhone(User user);

	/**
	 * 通过账号查找用户
     * @author : GeHuanHuan
     * @version : 2017.06.09 11:45
	 */
	int findByPhone(UserLogin login);
	
	
	/**
	 * 添加用户父子关系方法
	 * @author : GeHuanHuan
	 * @version : 2017.06.09 11:45
	 */
	void saveRelation(User u);

	/**
	 * 更改图片地址
	 * @author : GeHuanHuan
	 * @version : 2017.06.09 13:55:43
	 */
	void updateloadimageAddress(User user);
	
	/**
	 * 获取用户详细信息
	 * @author : GeHuanHuan
	 * @version : 2017.06.09 14:09:45
	 */
	public User getUserInfo(int id);
	
	/**
	 * 修改用户地址
	 * @author : GeHuanHuan
	 * @version : 2017.06.09 14:50
	 */
	void updateAppAddress(User user) ;

	/**
     * 修改用户昵称
     * @author : GeHuanHuan
     * @version : 2017.06.09 14:50
     */
    void updateAppPetName(User user) ;

    /**
     * 修改用户性别
     * @author : GeHuanHuan
     * @version : 2017.06.09 14:50
     */
    void updateAppSex(User user) ;

    /**
     * 修改用户生日
     * @author : GeHuanHuan
     * @version : 2017.06.09 14:50
     */
    void updateAppBirthday(User user) ;
    
    /**
     * 根据用户id查询用户详情
     * @author : GeHuanHuan
     * @version : 2017.06.09 15:13:22
     */
    User getAppUser(int id);
    
    /**
     * 根据用户登录名进行修改密码
     * @author : GeHuanHuan
     * @version : 2017.06.09 15:28:31
     */
    void updateAppPwd(User user);
    
    /**
     * 得到验证码
     * @author : GeHuanHuan
     * @version : 2017.06.09 15:30:52
     */
    String getAppCode(User user);
    
    /**
     * 根据手机号获取登录表中的信息
     * @author : GeHuanHuan
     * @version : 2017.06.09 15:47:10
     */
    User getLoginId(User user);
    
    /**
     * 
     * @author : GeHuanHuan
     * @version : 2017.06.09 15:47:32
     */
//    String getLoginName(User user);
    
    /**
     * 根据用户id查询此用户的好友列表
     * @author : GeHuanHuan
     * @version : 2017.06.09 15:47:37
     */
    List<User> getFriendsAll(User user);
    
    /**
     * 添加好友
     * @author : GeHuanHuan
     * @version : 2017.06.09 15:47:40
     */
    void saveAppFirend(User user);
    
    /**
     * 
     * @author : GeHuanHuan
     * @version : 2017.06.09 15:47:44
     */
    String getFirend(User user);
    
    
    /**
     * 根据手机号或者昵称 获取用户的信息
     * @author : GeHuanHuan
     * @version : 2017.06.09 15:48:10
     */
    List<User> getByPhone(User user);
    
    
    /**
     * 根据登录用户名获取密码
     * @author : GeHuanHuan
     * @version :  2017.6.9 17:57:47
     */
    String getPwd(User user);
    
    /**
     * 互加好友的时候 调用saveAppFirends 和 saveAppFirend这两个方法（两个方法必须要同时调用，提交）
     * @author : GeHuanHuan
     * @version : 2017.6.9 18:00:11
     */
    void saveAppFirends(User user);
    
    /**
     * 根据用户id获取此用户的手机号码
     * @author : GeHuanHuan
     * @version : 2017.6.9 18:05:59
     */
    String getPhone(String id);
    
    /**
     * 根据登录账号 得到支付密码
     * @author : GeHuanHuan
     * @version : 2017.6.9 18:08:18
     */
    String getPayPwd(User user);
    
    /**
     * 修改支付密码
     * @author : GeHuanHuan
     * @version : 2017.6.9 18:12:25
     */
    void updatePayPwd(UserLogin login);
    
    /**
     * 根据手机号获取用户id
     * @author : GeHuanHuan
     * @version : 2017.6.9 18:20:18
     */
    User getUserParams(String jointPhone);
    
    /**
     * 互删好友  要调用两个删除方法（deleteFirend1，deleteFirend）并且 两个方法必须同时调用提交
     * @author : GeHuanHuan
     * @version : 2017.6.9 18:21:07
     */
    void deleteFirend1(User user);
    int deleteFirend(User user);
    
    /**
     * 根据用户id来获取支付密码
     * @author : GeHuanHuan
     * @version : 2017.6.9 18:23:46
     */
    User getPayPwd1(String id);
    
    /**
     * 搜索用户（根据手机号码【手机号码完全匹配】 或者是 昵称【昵称模糊匹配】进行搜索）
     * @author : GeHuanHuan
     * @version : 2017.6.12 10:32:43
     */
    List<User> getByName(User user);
    /**
     * 环信加好友的时候 会在此表中添加一条数据
     * @author : GeHuanHuan
     * @version : 2017.6.12 10:46:07
     */
    int saveApply(User user);
    
    /**
     * 获取好友列表
     * @author : GeHuanHuan
     * @version : 2017.6.12 10:52:43
     */
    List<User> getApply(User user);
    
    /**
     * 删除好友
     * @author : GeHuanHuan
     * @version : 2017.6.12 10:57:45
     */
    void deleteApply(User user);
    
    /**
     * 根据手机号判断是否注册过此账号
     * @author : GeHuanHuan
     * @version : 2017.6.12 11:19:00
     */
    int userIsExists(String phone);
    
    /**
     * 获取通知的消息
     * @author : GeHuanHuan
     * @version : 2017.6.12 11:23:41
     */
    List<SMessage> getMessage(User user);
    
    /**
     * 消息已经阅读（把消息表的state字段修改为1）
     * @author : GeHuanHuan
     * @version : 2017年6月12日上午11:27:25
     */
    void updateMessage(SMessage sm);
    /**
     * 添加好友 确认通过后进行修改（此表中的apply_state字段为1）
     * @author : GeHuanHuan
     * @version : 2017年6月12日上午11:52:43
     */
    void updateApply(User user);
    
    /**
     * 根据用户id获取此用户的商户id
     * @author : GeHuanHuan
     * @version : 2017年6月12日上午11:55:19
     */
    String getBusinessId(int ids);
    
    /**
     * 根据id获取商户的详情信息
     * @author : GeHuanHuan
     * @version : 2017年6月12日上午11:56:38
     */
    BusinessInfo getBusiness(String bid);
    /**
     * 获取好友个数
     * @author : GeHuanHuan
     * @version : 2017年6月12日上午11:59:50
     */
    int getApplyFirend(User user); 
    /**
     * 根据登录账号 获取登录信息
     * @author : GeHuanHuan
     * @version : 2017年6月12日下午12:59:42
     */
    UserLogin getUserMes(User use);
    /**
     * 根据用户id查询账户信息
     * @author : GeHuanHuan
     * @version : 2017年6月12日下午1:48:37
     */
    UserAccount getAccount(String userId);
    
    /**
     * 根据登录id查询积分
     * @author : GeHuanHuan
     * @version : 2017年6月12日下午1:50:09
     */
    String getPoints(String loginId);
    /**
     * 根据账号查询id
     * @author : GeHuanHuan
     * @version : 2017年6月12日下午1:52:13
     */
    String findByPhonea(UserLogin login);
    /**
     * 修改积分
     * @author : GeHuanHuan
     * @version : 2017年6月12日下午1:53:32
     */
    void updatePoints(User u);
    /**
     * 根据代理人id查询代理的信息个数
     * @author : GeHuanHuan
     * @version : 2017年6月12日下午1:58:18
     */
    int getIsAgent(int id);
    /**
     * 根据登录账号 获取用户详情表中的id
     * @author : GeHuanHuan
     * @version : 2017年6月12日下午2:02:25
     */
    Integer getUserInfoByLoginId(int loginId);
    /**
     * 用户升级为vip用户 在vip用户表中 添加一条信息
     * @author : GeHuanHuan
     * @version : 2017年6月12日下午2:05:48
     */
    void saveVipDetails(User u);
    /**
     *  升级用户的vip等级
     * @author : GeHuanHuan
     * @version : 2017年6月12日下午2:08:41
     */
    int updateLevel(User us);
    /**
     * 根据用户id获取用户的vip等级，冻结金额等信息
     * @author : GeHuanHuan
     * @version : 2017年6月12日下午2:10:48
     */
    User getUserLevel(int id);
    
    /**
     * 用户登录
     * @param user
     */
    UserLogin getUserLoginByUserName(String userName);
    /**
     * 根据登录名和密码查询环信的id
     * @param user
     * @return
     */
    String getHxId(User user);
    
    /**
     * 根据环信id查询用户信息
     * @param login
     * @return
     */
    User appLogin(UserLogin login);
    /**
     * 环信表中存值
     * @param user
     */
    void saveHxId(User user);
    
    Group getGroupMsg(Group group);
    
    void updateGroupImage(Group group);
    
    User getById(User user) ;
}
